Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>KPI-driven code analysis</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/KPI-driven_code_analysis"> <link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-KPI-driven_code_analysis rootpage-KPI-driven_code_analysis skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">KPI-driven code analysis</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p><b> KPI driven code analysis</b> (KPI = Key Performance Indicator) is a method of analyzing software source code and source code related IT systems to gain insight into business critical aspects of the development of a software system such as team-performance, time-to-market, risk-management, failure-prediction and much more.
</p><p>The KPI driven code analysis - developed at the <a href="Hasso_Plattner_Institute" title="Hasso Plattner Institute">Hasso Plattner Institute</a> - is a <a href="Static_program_analysis" title="Static program analysis">static program analysis</a> of source code for the purpose of improving software quality. However, the KPI driven code analysis does not only analyze the source code. Other information sources, such as coding activities, are also included to create a comprehensive impression of the quality and development progress of a software system.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Mode_of_operation">Mode of operation</h2></div>
<p>KPI driven code analysis is a fully automated process which thus enables team activities and modifications to the overall source code of a software system to be monitored in real time. In this way, negative trends become evident as soon as they arise. This “early warning system” thus offers a powerful instrument for reducing costs and increasing development speed.
Through the early-warning approach of KPI driven code analysis, every newly introduced level of complexity is discovered in good time and its impact can thus be minimized. Instead of wasting valuable time trying to reduce legacy complexities, developers can use their time for new functionality, helping the team increase productivity.
</p>
<div class="mw-heading mw-heading2"><h2 id="The_human_factor">The human factor</h2></div>
<p>The “human factor” is included in the KPI driven code analysis which means that it also looks at which code was registered by which developer and when. In this way, the quality of software delivered by each individual developer can be determined and any problems in employee qualification, direction and motivation can be identified early and appropriate measures introduced to resolve them.
</p>
<div class="mw-heading mw-heading2"><h2 id="Sources_considered">Sources considered</h2></div>
<p>In order to determine the key performance indicators (KPIs) – figures which are crucial to the productivity and success of software development projects – numerous data sources related to the software code are read out. For this purpose, KPI driven code analysis borrows methods taken from <a href="Data_mining" title="Data mining">data mining</a> and <a href="Business_intelligence" title="Business intelligence">business intelligence</a>, otherwise used in accounting and customer analytics. The KPI driven code analysis extracts data from the following sources and consolidates them in an analysis data model. On this data model, the values of the key performance indicators are calculated. The data sources include, in particular:
</p>
<ul><li><a href="Revision_Control" class="mw-redirect" title="Revision Control">Revision Control</a>, also known as <a href="Version_control" title="Version control">version control</a>. In this system every step of each individual developer is tracked for the entire life cycle of the software system. The data describes: “Which developer changed what when.” This data provides a basis for answering the question, “What effort or development cost has been invested in which areas of code?” Prominent revision control systems are <a href="Subversion" title="Subversion">Subversion</a>, <a href="Git_(software)" class="mw-redirect" title="Git (software)">Git</a>, <a href="Perforce" title="Perforce">Perforce</a>, <a href="Mercurial" title="Mercurial">Mercurial</a>, <a href="Synergy" title="Synergy">Synergy</a>, <a href="ClearCase" class="mw-redirect" title="ClearCase">ClearCase</a>, …</li>
<li>Software Test Systems. These provide a read-out as to which parts of the source code have already been tested. With this information, it becomes obvious where there are gaps in testing, possibly even where these gaps were intentionally left (due to the significant cost and effort involved in setting up tests).</li>
<li><a href="Bug_Tracking_System" class="mw-redirect" title="Bug Tracking System">Bug Tracking Systems</a> (<a href="Bug_Tracker" class="mw-redirect" title="Bug Tracker">Bug Tracker</a>). This information can be used in combination with the information provided by the revision control system to help draw conclusions on the error rate of particular areas of code.</li>
<li><a href="Issue_tracking_system" title="Issue tracking system">Issue tracking systems</a>. The information produced by these systems, in conjunction with the information from revision control, enables conclusions to be drawn regarding development activity related to specific technical requirements. In addition, precise data on time investment can be utilized for the analysis.</li>
<li>Performance profilers (<a href="Profiling_(computer_programming)" title="Profiling (computer programming)">Profiling (computer programming)</a>). The data on the performance of the software system help to analyze which areas of code consume the most CPU resources.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Analysis_results">Analysis results</h2></div>
<p>Due to the many influencing factors which feed into the analysis data model, methods of optimizing the source code can be identified as well as requirements for action in the areas of employee qualification, employee direction and development processes:
</p>
<ul><li>Knowledge as to where source code needs to be reworked because it is too complex or has an inferior runtime performance:
<ul><li>Deep nesting which exponentially increases the number of control flow paths.</li>
<li>Huge, monolithic code units in which several aspects have been mixed together so that to change one aspect, changes have to be implemented at several points.</li>
<li>Identification of unnecessary multi-threading. Multi-threading is an extremely large error source. The run-time behavior of multi-threading code is hard to comprehend meaning the cost and effort required for extensions or maintenance to it is correspondingly high. Thus, as a general rule, unnecessary multi-threading should be avoided.</li></ul></li>
<li>Identification of insufficient exception handling. If there are too few try-catch blocks in the code or if nothing is executed in the catch function, the consequences, if program errors arise, can be serious.</li>
<li>Identification of which sections of source code have been altered since the last software test, i.e. where tests must be performed and where not. This information enables software tests to be planned more intelligently: new functionality can be tested more intensively or resources saved.</li>
<li>Knowledge of how much cost and effort will be required for the development or extension of a particular software module:
<ul><li>When extending existing software modules, a recommendation for action could be to undertake code refactoring.</li>
<li>Any newly developed functionality can be analyzed to ascertain whether a target/performance analysis has been performed for the costs and if so why. Were the causes of the deviations from the plan identified, can measures be implemented to increase accuracy in future planning.</li></ul></li>
<li>By tracing which developer (team) produced which source code and examining the software created over a sustained period, any deficiencies can be identified as either one-off slips in quality, evidence of a need for improved employee qualification or whether the software development process requires further optimization.</li></ul>
<p>Finally the analysis data model of the KPI driven code analysis provides IT project managers, at a very early stage, with a comprehensive overview of the status of the software produced, the skills and effort of the employees as well as the maturity of the software development process.
</p><p>One method of representation of the analysis data would be so-called <a href="Software_map" title="Software map">software maps</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Program_analysis_(computer_science)" class="mw-redirect" title="Program analysis (computer science)">Program analysis (computer science)</a></li>
<li><a href="Dynamic_program_analysis" title="Dynamic program analysis">Dynamic program analysis</a></li>
<li><a href="Shape_analysis_(software)" class="mw-redirect" title="Shape analysis (software)">Shape analysis (software)</a></li>
<li><a href="Formal_semantics_of_programming_languages" class="mw-redirect" title="Formal semantics of programming languages">Formal semantics of programming languages</a></li>
<li><a href="Formal_verification" title="Formal verification">Formal verification</a></li>
<li><a href="Software_testing" title="Software testing">Software testing</a></li>
<li><a href="Code_audit" title="Code audit">Code audit</a></li>
<li><a href="Documentation_generator" title="Documentation generator">Documentation generator</a></li>
<li><a href="List_of_tools_for_static_code_analysis" title="List of tools for static code analysis">List of tools for static code analysis</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2013/2193/TSD2013.html">Interactive Rendering of Complex 3D-Treemaps</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2013/2272/TDT2013.html">Multiscale Visual Comparison of Execution Traces</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2013/2275/LWTD2013.html">Interactive Software Maps for Web-Based Source Code Analysis</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2012/2076/TD2012.html">Extending Recommendation Systems with Software Maps</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2012/2113/TBD2012.html">A Visual Analysis Approach to Support Perfective Software Maintenance</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2012/2126/TTD2012.html">ViewFusion: Correlating Structure and Activity Views for Execution Traces</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2011/2071/BTD2011.html">A Visual Analysis and Design Tool for Planning Software Reengineerings</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2011/2033/LTD2011.html">Interactive Areal Annotations for 3D Treemaps of Large-Scale Software Systems</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2011/2048/BOH11.html">Visualization of Execution Traces and its Application to Software Maintenance</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2010/1219/TBD10.html">Understanding Complex Multithreaded Software Systems by Using Trace Visualization</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2010/1218/TBVD10.html">Visualization of Multithreaded Behavior to Facilitate Maintenance of Complex Software Systems</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2009/812/BKD09.html">Visualizing Massively Pruned Execution Traces to Facilitate Trace Exploration</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2009/825/BVD09.html">Projecting Code Changes onto Execution Traces to Support Localization of Recently Introduced Bugs</a></li>
<li><a rel="nofollow" class="external text" href="http://www.hpi.uni-potsdam.de/doellner/publications/year/2013/2284/KTD2013.html">SyncTrace: Visual Thread-Interplay Analysis</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2024-07-17" href="https://en.wikipedia.org/wiki/?title=KPI-driven_code_analysis&amp;oldid=1235149333">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>